package org.example;

public class Test2 {
    //leetcode 376 摆动序列 https://leetcode.cn/problems/wiggle-subsequence/description/

    /**
     * 贪心策略：最长摆动序列的长度就是数组生成的折线图中峰值的数量，记录峰值的数量
     * @param nums
     * @return
     */
    public int wiggleMaxLength(int[] nums) {
        //left记录第i个数的左边是递增还是递减
        //right就用来记录第i个数右边是递增还是递减，当遇到相等的数字的时候，就需要跳过这些重复的值，当right=0的时候，就直接continue
        int count = 0, left = 0, right = 0, n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            right = nums[i + 1] - nums[i];
            if (right == 0) continue;
            if (left * right <= 0) count++;
            left = right;
        }
        //循环的时候最后一个点没有考虑到，但是最后一个点是一定要算上的
        return count + 1;
    }
}
